package com.cn.boot.spring.common;

import java.io.File;
import java.util.UUID;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

/**
 * 文件上传工具类
 * @author Administrator
 */
public class FileUploadUtil {

    public static String upload(MultipartFile file) {
        try {
            String extName = file.getOriginalFilename();
            // 获取文件后缀
            if (extName.lastIndexOf(".") <= 0) {
                throw new RuntimeException("不支持该文件类型");
            }
            extName = extName.substring(extName.lastIndexOf("."));
            String webUrl = getWebUrl();
            String fileName = getFileName();
            String sysPath = System.getProperty("catalina.home") + "/webapps";
            // 获取文件名字
            fileName = getFileName() + extName;
            // 获取文件地址
            String filePath = "/content/" + fileName;
            String Url = sysPath +"/content/";
            File file2 = new File(Url);
            if (!file2.exists()) {
                file2.mkdirs();
            }
            file.transferTo(new File(sysPath + filePath));
            return webUrl + filePath;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     *
     * @Title: upload
     * @Description: (将文件保存到指定的路径下)
     * @param file
     */
    public static String upload(MultipartFile file,String specifiedPath) {
        try {
            String extName = file.getOriginalFilename();
            // 获取文件后缀
            if (extName.lastIndexOf(".") <= 0) {
                throw new RuntimeException("不支持该文件类型");
            }
            extName = extName.substring(extName.lastIndexOf("."));
            String fileName = getFileName();
            // 获取文件名字
            fileName = getFileName() + extName;
            File file2 = new File(specifiedPath);
            if (!file2.exists()) {
                file2.mkdirs();
            }
            file.transferTo(new File(specifiedPath + File.separator+ fileName));
            return fileName;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 获取文件名
     * @return
     */
    public static String getFileName() {
        String uuid = UUID.randomUUID().toString();
        uuid = uuid.replace("-", "");
        return uuid.toLowerCase();
    }

    public static String getWebUrl() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        return  request.getServletContext().getRealPath("/img");
    }

    public static String getWebProUrl() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() +request.getContextPath();
    }

}